import router from './router/';
import store from './store';
import {getToken} from '@/utils/auth';
import {setStore, getStore, removeStore} from '@/utils/store';
import NProgress from 'nprogress'; // progress bar
import 'nprogress/nprogress.css'; // progress bar style
NProgress.configure({showSpinner: false});
const lockPage = '/lock'; //锁屏页
router.beforeEach((to, from, next) => {
    const meta = to.meta || {};
    const isMenu = meta.menu === undefined ? to.query.menu : meta.menu;
    store.commit('SET_IS_MENU', isMenu === undefined);
    if (getToken()) {
        if (store.getters.isLock && to.path != lockPage) {
            //如果系统激活锁屏，全部跳转到锁屏页
            next({path: lockPage});
        } else if (to.path === '/login') {
            //如果登录成功访问登录页跳转到主页
            next({path: '/'});
        } else {
            if (store.getters.token.length === 0) {
                store.dispatch('FedLogOut').then(() => {
                    recordNoAuthUrl(to);
                    next({path: '/login'});
                });
            } else {
                const meta = to.meta || {};
                const query = to.query || {};
                if (meta.target) {
                    window.open(query.url.replace(/#/g, '&'));
                    return;
                } else if (meta.isTab !== false) {
                    store.commit('ADD_TAG', {
                        name: query.name || to.name,
                        path: to.path,
                        fullPath: to.fullPath,
                        params: to.params,
                        query: to.query,
                        meta: meta,
                    });
                }
                next();
            }
        }
    } else {
        //判断是否需要认证，没有登录访问去登录页
        if (meta.isAuth === false) {
            next();
        } else {
            recordNoAuthUrl(to);
            next('/login');
        }
    }
});

router.afterEach(to => {
    NProgress.done();
    let title = router.$avueRouter.generateTitle(to, {label: 'name'});
    router.$avueRouter.setTitle(title);
    store.commit('SET_IS_SEARCH', false);
});

/**
 * 记录没有登录的信息/token过期的 url
 */
function recordNoAuthUrl(to) {
    setStore({name: "router_to", content: to.fullPath,type:'session'})
}
